home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / NDK / NDK_1.3 / Include-Strip1.3 / include.i / exec / lists.i < prev    next >
Encoding:
Text File  |  1988-07-15  |  1.6 KB  |  108 lines

  1.     IFND    EXEC_LISTS_I
  2. EXEC_LISTS_I    SET    1
  3.     IFND    EXEC_NODES_I
  4.     INCLUDE    "exec/nodes.i"
  5.     ENDC
  6.     STRUCTURE    LH,0
  7.     APTR    LH_HEAD
  8.     APTR    LH_TAIL
  9.     APTR    LH_TAILPRED
  10.     UBYTE    LH_TYPE
  11.     UBYTE    LH_pad
  12.     LABEL    LH_SIZE
  13.     STRUCTURE    MLH,0
  14.     APTR    MLH_HEAD
  15.     APTR    MLH_TAIL
  16.     APTR    MLH_TAILPRED
  17.     LABEL    MLH_SIZE
  18. NEWLIST    MACRO    *
  19.     MOVE.L    \1,(\1)
  20.     ADDQ.L    #LH_TAIL,(\1)
  21.     CLR.L    LH_TAIL(\1)
  22.     MOVE.L    \1,(LH_TAIL+LN_PRED)(\1)
  23.     ENDM
  24. TSTLIST    MACRO    *
  25.     IFC    '\1',''
  26.     CMP.L    LH_TAIL+LN_PRED(A0),A0
  27.     ENDC
  28.     IFNC    '\1',''
  29.     CMP.L    LH_TAIL+LN_PRED(\1),\1
  30.     ENDC
  31.     ENDM
  32. SUCC    MACRO    *
  33.     MOVE.L    (\1),\2
  34.     ENDM
  35. PRED    MACRO    *
  36.     MOVE.L    LN_PRED(\1),\2
  37.     ENDM
  38. IFEMPTY    MACRO    *
  39.     CMP.L    LH_TAIL+LN_PRED(\1),\1
  40.     BEQ    \2
  41.     ENDM
  42. IFNOTEMPTY    MACRO    *
  43.     CMP.L    LH_TAIL+LN_PRED(\1),\1
  44.     BNE    \2
  45.     ENDM
  46. TSTNODE    MACRO    *
  47.     MOVE.L    (\1),\2
  48.     TST.L    (\2)
  49.     ENDM
  50. NEXTNODE    MACRO    *
  51.     MOVE.L    \1,\2
  52.     MOVE.L    (\2),\1
  53.     IFC    '\0',''
  54.     BEQ    \3
  55.     ENDC
  56.     IFNC    '\0',''
  57.     BEQ.S    \3
  58.     ENDC
  59.     ENDM
  60. ADDHEAD    MACRO
  61.     MOVE.L    (A0),D0
  62.     MOVE.L    A1,(A0)
  63.     MOVEM.L    D0/A0,(A1)
  64.     MOVE.L    D0,A0
  65.     MOVE.L    A1,LN_PRED(A0)
  66.     ENDM
  67. ADDTAIL    MACRO
  68.     LEA    LH_TAIL(A0),A0
  69.     MOVE.L    LN_PRED(A0),D0
  70.     MOVE.L    A1,LN_PRED(A0)
  71.     MOVE.L    A0,(A1)
  72.     MOVE.L    D0,LN_PRED(A1)
  73.     MOVE.L    D0,A0
  74.     MOVE.L    A1,(A0)
  75.     ENDM
  76. REMOVE    MACRO
  77.     MOVE.L    (A1),A0
  78.     MOVE.L    LN_PRED(A1),A1
  79.     MOVE.L    A0,(A1)
  80.     MOVE.L    A1,LN_PRED(A0)
  81.     ENDM
  82. REMHEAD    MACRO
  83.     MOVE.L    (A0),A1
  84.     MOVE.L    (A1),D0
  85.     BEQ.S    REMHEAD\@
  86.     MOVE.L    D0,(A0)
  87.     EXG.L    D0,A1
  88.     MOVE.L    A0,LN_PRED(A1)
  89. REMHEAD\@
  90.     ENDM
  91. REMHEADQ    MACRO    *
  92.     MOVE.L    (\1),\2
  93.     MOVE.L    (\2),\3
  94.     MOVE.L    \3,(\1)
  95.     MOVE.L    \1,LN_PRED(\3)
  96.     ENDM
  97. REMTAIL    MACRO
  98.     MOVE.L    LH_TAIL+LN_PRED(A0),A1
  99.     MOVE.L    LN_PRED(A1),D0
  100.     BEQ.S    REMTAIL\@
  101.     MOVE.L    D0,LH_TAIL+LN_PRED(A0)
  102.     EXG.L    D0,A1
  103.     MOVE.L    A0,(A1)
  104.     ADDQ.L    #4,(A1)
  105. REMTAIL\@
  106.     ENDM
  107.     ENDC
  108.